package com.cskaoyan.javase.array._0introduction;

/**
 * 数组的引入
 * 假设一个班上有80个人，现在需要统计，某一门课程的平均成绩，是否需要定义80个变量？
 * 编写一个程序，需要储存12个月份的天数，是否要定义12个变量呢？
 * 编写一个扑克程序，需要储存54张扑克的信息，是否要定义54个变量？
 * 如果程序需要储存上成千上万的数据，程序员是不是也要逐一定义成千上万个变量呢？
 *
 * 很明显，如果程序需要多少数据，就要定义多少个变量，也太过于麻烦了
 * 并且多个变量单独存在没有任何关联，也不方便管理和维护。
 * 而程序的可维护性,扩展性是程序最重要的优点.
 *
 * 这样就好比，去超市购物，谁有人会把东西一个一个带回家。
 * 购物需要"袋子"装东西，Java变量也需要一个容器来存放它们。
 *
 * Java的容器有很多，
 *      最基本的容器就是数组（Array），定义一个数组，就可以存储很多数据。
 * 基本的容器是数组,高级的容器是集合(collection),实际上开发中集合更常用,数组几乎不会直接使用.
 *
 * 数组的定义:
 * 数组是存储多个，具有相同数据类型的数据元素的有序容器（集合）。
 * 数组中的元素的数据类型,决定了数组的数据类型,比如int类型数组,就存储int类型元素
 *
 * 定义中的重点是：
 *      1.能够存储多个数据元素
 *      2.这些数据元素的数据类型，必须一致
 *      3.这些数据是有序的：
 *           数组中的每个存储单元，都有唯一编号(下标)，该编号，从左向右，
 *           从0开始编号，最大值是数组长度-1
 *              这种编号，专业的术语称之为下标或者索引（index）
 * 补充：
 *          1.数组虽然是容器,但本身仍然是一个变量,而且它是一种引用数据类型变量
 *          2.数组里面，可以存储基本数据类型元素，也可以存储引用数据类型元素
 *                  但是一个数组里面只能存储同一种数据类型。
 *
 * 数组的最大优点是支持随机访问,访问效率高
 * 但是为了实现随机访问,数组付出了代价:
 *      1.存储单元必须连续,数组对内存空间的要求很高
 *      2.存储单元必须大小一致,导致数组只能存储单一数据类型
 *
 * 于是就能够引出数组最大的缺点:
 *      数组的长度一旦确定,就不可更改了
 *      数组的内存空间必须事先规划好,一旦确定不可更改.
 * 所以其实使用数组是很烦心的事情:
 *      因为数组的长度太长,会浪费内存空间
 *      数组的长度太短,更不行了
 *      导致实际开发中几乎不会直接用数组
 *      但是集合中有这样一个容器,它继承了数组的随机访问,有下标
 *      还能自由的自主扩容,不受数组长度的限制
 *      ArrayList底层就是数组继承了数组的优点
 *      同时还可以自由扩容数组(新建一个数组,然后将元素拷贝过去)
 *
 @since 11:20
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        double score1 = 10;
        double score2 = 10;
        double score3 = 10;
        double score4 = 10;
        double score5 = 10;
        double score6 = 10;
    }
}
